One of the most important functions of the Internet Protocol (IP) is the interconnection of heterogeneous links into a single interoperable network. This is equally true for constrained networks in IoT, where there are many wireless (and also wired) link-layer technologies in use. In respect to that, Internet of Things (IoT) refers to the interconnection of constrained devices with the Internet. The IoT environment will have multiple constrained devices operating in a constrained network.
Typically, a constrained network has limited packet sizes, may exhibit a high degree of packet loss, and may have a substantial number of devices with constrained capabilities (such as Central processing unit (CPU) or memory). These networks and the devices nodes within them are characterized by severe limitations on throughput and available power.
In the majority of constrained networks, each constrained device is identified by a unique IPv6 address, and is capable of sending and receiving IPv6 packets. Typically constrained networks such as 6LoWPAN support IPv6 traffic and use the user datagram protocol (UDP) as a transport protocol.
IPv6 over Low-Power Wireless Personal Area Networks (6LoWPANs) are an example of a constrained network. The 6LoWPAN architecture is made up of low-power wireless area networks, which are IPv6 stub networks. A stub network is a network which IP packets are sent from or destined to, but which does not act as a relay to other networks and has no knowledge of other networks around it.
A 6LoWPAN network is the collection of IPv6 devices which share a common IPv6 address prefix (in the majority of the cases the first 64 bits of an IPv6 address), meaning that regardless of where a node is in a 6LoWPAN network, its IPv6 address remains the same. A simple 6LoWPAN is connected through one 6LoWPAN Edge Router to another IP network. An Extended 6LoWPAN network encompasses multiple edge routers interconnected with a backbone link (e.g., Ethernet).
6LoWPAN networks are connected to other IP networks through edge routers. The Edge Router plays an important role as it routes traffic in and out of the 6LoWPAN network, while handling compression and Neighbor Discovery (ND) for the 6LoWPAN network. If the 6LoWPAN network is to be connected to an IPv4 network, the Edge Router will also handle IPv6-to-IPv4 interconnectivity. Edge Routers typically have management features tied into overall network management solutions. Multiple Edge Routers can be supported in the same 6LoWPAN network if they share a common backbone link.
One important feature offered by the 6LoWPAN networks is the discovery of IoT resources. In many IoT scenarios, direct discovery of resources is not practical due to sleeping nodes, disperse networks, or networks where multicast traffic is inefficient. These problems can be solved by employing an entity called a Resource Directory (RD), which hosts descriptions of resources held on other servers, allowing lookups to be performed for those resources.
The Internet Engineering Task Force Internet (IETF) is in the process of standardizing the entity called Resource Directory that supports other nodes to discover the RD and to register, maintain, lookup, and remove, resource descriptions from the RD [IETF Internet-Draft “CoRE Resource Directory”, Oct. 16, 2015, draft-ietf-core-resource-directory-05].
As stated above, constrained networks generally support only IPv6 addresses. However, it will be often necessary for the constrained devices to interact with IPv4 nodes (also referred to as IPv4 compliant devices) or across IPv4 networks. There are several ways to deal with IPv4 interconnectivity, including IPv6-in-IPv4 tunneling and address translation. These mechanisms are frequently implemented on those constrained networks. For instance, 6LoWPAN networks use Edge Routers for that purpose on the Internet.
Even though that the IPv4-IPv6 interconnectivity can be integrated in the majority of the constrained networks, there are still some cases in which the use of Network Address Translations (NATs) or tunneling is too limited, or cannot solve the routability problem between the different networks. Tunneling also adds packet overhead, makes the routes non-optimal, and requires the installation of tunnel end points.
Let's suppose the case of having an IPv6 constrained network which is connected to the IPv4 general Internet. In this case, if a node in the IPv4 network (i.e., an IPv4 compliant device hereinafter) wants to connect with a node (or the resources provided by it) in the constrained network, it needs to know its IP address. The IPv4 node could ask for the IP address of the other node to the network using Domain Name System (DNS) lookup, but the network will return an IPv6 address which the node will not know how to translate into an IPv4 route. The IPv4 node could use the Resource Directory, but the Resource Directory will return again an IPv6 address. Furthermore, the dynamic NAT methods enable communication only when the communication is originated by the network behind the NAT. Hereinafter, “the network behind the NAT” means that the NAT is controlling and translating all the incoming and outgoing traffic of that network. For example, the network behind the NAT may be an IPv6 constrained network. That limitation makes impossible that an IPv4 node in the public Internet would be able to contact or even know about the existence of an IPv6 node (also referred to as an IPv6 compliant device hereinafter) behind a NAT.
This limitation creates a lot of constraints in the IoT world since the majority of IoT constrained networks are IPv6 enabled and will be mainly connected to IPv4 compliant devices.